#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "audiocapturer.h"
#include "spectrumwidget.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

/**
 * @class MainWindow
 * @brief 主窗口类 - 整合UI和音频捕获器
 * 
 * 简化后的职责：
 * 1. 创建和管理 AudioCapturer（音频捕获 + FFT分析，都在子线程）
 * 2. 创建和管理 SpectrumWidget（UI显示）
 * 3. 连接信号槽，将频谱数据传递给UI
 * 
 * 注意：FFT分析已移到AudioCapturer的子线程中
 */
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    /**
     * @brief 频谱数据就绪槽函数
     * @param spectrum 频谱数组（20个频段，0.0-1.0）
     * 
     * 直接从AudioCapturer接收已处理好的频谱数据
     * FFT已在子线程中完成
     */
    void onSpectrumReady(const QVector<float> &spectrum);
    
    /**
     * @brief 错误发生槽函数
     */
    void onErrorOccurred(const QString &error);

private:
    Ui::MainWindow *ui;
    AudioCapturer *m_audioCapturer;      ///< 音频捕获器（子线程，包含FFT）
    SpectrumWidget *m_spectrumWidget;    ///< 频谱显示组件（主线程UI）
};

#endif // MAINWINDOW_H